﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            /*
            //ArrayList al = new ArrayList();
            List<int> al = new List<int>();
            al.Add(10);
            al.Add(20);

           // int a = (int)al[1];
            int a = al[1];
            */

            /*
            //списки с произвольлным доступом

            LinkedList<int> l1 = new LinkedList<int>();
            l1.AddFirst(10);
            l1.AddLast(20);
            LinkedListNode<int> node = l1.First;
          //  Console.WriteLine(node.Value);
            //Console.WriteLine(node.Next.Value);
            while (node != null)
            {
                Console.WriteLine(node.Value);
                node = node.Next;
            }
             */
            /*
            //очередь
            Queue queue = new Queue();
            queue.Enqueue(10);
            queue.Enqueue(20);
            queue.Enqueue(30);

            Console.WriteLine(queue.Dequeue());
            Console.WriteLine(queue.Dequeue());
            Console.WriteLine(queue.Dequeue());
            */
            /*
            //класс стек

            stack.Push(10);
            stack.Push(10);
            stack.Push(10);

            Console.WriteLine(stack.Pop());
            Console.WriteLine(stack.Pop());
            Console.WriteLine(stack.Pop());
            */
            /*
            // хеш таблица
            Dictionary<string, int> dict = new Dictionary<string, int>();

            dict["hello"] = 23;
            dict["test"] = 100;

            Console.WriteLine(dict["hello"]);
            Console.WriteLine(dict["test"]);
            */
            //____________________________________
            /*
            int a = 0xFF;
            sbyte b = (sbyte)a;
            Console.WriteLine(b);
            */

            //Значемые типы
            /*
            short a = 10;
            ushort a1 = 10;
            uint b1 = 10;
            decimal
            */

            //(одтн объем памяти, одна переменная в её перезаписываем)
            //MyClass mc = new MyClass();   // - mc - ссылка на объект
            //mc.a = 10;
            //MyClass mc1 = mc;
            //mc.a = 20;
            //Console.WriteLine(mc.a);

            //(со
            //MyStruct mc = new MyStruct(); // mc - сам кусок памяти, где записаны поле а
            //mc.a = 10;
            //MyStruct mc1 = mc;
            //mc1.a = 20;
            //Console.WriteLine(mc.a);


            Int32 o;

            Console.ReadLine();
        }

        class MyClass
        {
            public int a;
            public int b;
        }

        struct MyStruct
        {
            public int a;
            public int b;
        }
    }
}
